package com.inei.evaluaciondelaencuesta.view;

import java.sql.NClob;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import com.inei.evaluaciondelaencuesta.R;
import com.inei.evaluaciondelaencuesta.controller.PersonaController;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;

public class Encuesta_Persona_Activity extends Activity {

	// variable de componentes
	private EditText etConglomerado, etGrupo, etVivienda, etHogar;
	private ListView lvPersonas;

	// variables
	private PersonaController con;
	private List<Integer> listaCodPer;
	private int marco_id, formato_id;
	private String conglomerado, grupo, vivienda, hogar_id;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_encuesta_persona);

		con = new PersonaController(Encuesta_Persona_Activity.this);

		IniciarComponentes();

		CargarDatos();
	}

	@Override
	public void onCreateContextMenu(ContextMenu menu, View v,
			ContextMenuInfo menuInfo) {
		getMenuInflater().inflate(R.menu.hogar_menu, menu);
		menu.setHeaderTitle("Menu");
		super.onCreateContextMenu(menu, v, menuInfo);
	}

	@Override
	public boolean onContextItemSelected(MenuItem item) {
		AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
				.getMenuInfo();
		switch (item.getItemId()) {
		case R.id.mnEditar:
			if (getIntent().getExtras().getInt("viene") == 4) {
				GuardarDatos();
				if (con.PersonaModificar(listaCodPer, marco_id, hogar_id) > 0) {
					Intent ir_encuesta_ii = new Intent(this,
							Encuesta_II_Activity.class);
					Bundle datos = getIntent().getExtras();
					datos.putInt("codPer", listaCodPer.get(info.position));
					ir_encuesta_ii.putExtras(datos);
					startActivity(ir_encuesta_ii);

					Toast.makeText(this, "Se guardo con exito",
							Toast.LENGTH_SHORT).show();
					finish();
				}
			}
			if (getIntent().getExtras().getInt("viene") == 11) {
				GuardarDatos();
				if (con.PersonaModificar(listaCodPer, marco_id, hogar_id) > 0) {
					Intent ir_encuesta_xi = new Intent(this,
							Encuesta_XI_Activity.class);
					Bundle datos = getIntent().getExtras();
					datos.putInt("codPer", listaCodPer.get(info.position));
					ir_encuesta_xi.putExtras(datos);
					startActivity(ir_encuesta_xi);

					Toast.makeText(this, "Se guardo con exito",
							Toast.LENGTH_SHORT).show();
					finish();
				}
			}
			break;
		default:
			break;
		}
		return super.onContextItemSelected(item);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.encuesta_persona, menu);
		if (getIntent().getExtras().getInt("viene") == 11) {
			menu.getItem(0).setVisible(false);
		}
		return super.onCreateOptionsMenu(menu);
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {

		switch (item.getItemId()) {
		case R.id.mnNuevoPersona:
			NuevaPersona();
			break;
		case R.id.mnGuardarYContinuar:
			if (getIntent().getExtras().getInt("viene") == 4) {
				GuardarDatos();
				if (con.PersonaModificar(listaCodPer, marco_id, hogar_id) > 0) {
					Intent ir_encuesta_v = new Intent(this,
							Encuesta_V_Activity.class);
					Bundle datos = getIntent().getExtras();
					ir_encuesta_v.putExtras(datos);
					startActivity(ir_encuesta_v);

					Toast.makeText(this, "Se guardo con exito",
							Toast.LENGTH_SHORT).show();

					finish();
				} else {
					Toast.makeText(this, "Error al guardar", Toast.LENGTH_SHORT)
							.show();
				}
			}
			if (getIntent().getExtras().getInt("viene") == 11) {
				GuardarDatos();
				if (con.PersonaModificar(listaCodPer, marco_id, hogar_id) > 0) {
					Intent ir_encuesta_xii_1 = new Intent(this,
							Encuesta_XII_1_Activity.class);
					Bundle datos = getIntent().getExtras();
					ir_encuesta_xii_1.putExtras(datos);
					startActivity(ir_encuesta_xii_1);

					Toast.makeText(this, "Se guardo con exito",
							Toast.LENGTH_SHORT).show();

					finish();
				} else {
					Toast.makeText(this, "Error al guardar", Toast.LENGTH_SHORT)
							.show();
				}
			}

			break;
		case R.id.mnGuardarYSalir:
			GuardarDatos();
			if (con.PersonaModificar(listaCodPer, marco_id, hogar_id) > 0) {
				Intent ir_marco = new Intent(this, Marco_Activity.class);
				startActivity(ir_marco);

				Toast.makeText(this, "Se guardo con exito", Toast.LENGTH_SHORT)
						.show();

				finish();
			} else {
				Toast.makeText(this, "Error al guardar", Toast.LENGTH_SHORT)
						.show();
			}
			break;
		default:
			break;
		}
		return super.onOptionsItemSelected(item);
	}

	@Override
	public void onBackPressed() {
		if (getIntent().getExtras().getInt("viene") == 4) {
			Intent ir_encuesta = new Intent(this, Encuesta_I_Activity.class);
			Bundle datos = getIntent().getExtras();
			ir_encuesta.putExtras(datos);
			startActivity(ir_encuesta);
			finish();
		}
		if (getIntent().getExtras().getInt("viene") == 11) {
			Intent ir_encuesta = new Intent(this, Encuesta_X_Activity.class);
			Bundle datos = getIntent().getExtras();
			ir_encuesta.putExtras(datos);
			startActivity(ir_encuesta);
			finish();
		}

		super.onBackPressed();
	}

	private void IniciarComponentes() {
		etConglomerado = (EditText) findViewById(R.id.etConglomerado);
		etGrupo = (EditText) findViewById(R.id.etGrupo);
		etVivienda = (EditText) findViewById(R.id.etVivienda);
		etHogar = (EditText) findViewById(R.id.etHogar);

		lvPersonas = (ListView) findViewById(R.id.lvPersonas);
		registerForContextMenu(lvPersonas);
	}

	private void CargarDatos() {
		marco_id = getIntent().getExtras().getInt("marco_id");
		formato_id = getIntent().getExtras().getInt("formato_id");
		conglomerado = getIntent().getExtras().getString("conglomerado");
		grupo = getIntent().getExtras().getString("grupo");
		vivienda = getIntent().getExtras().getString("vivienda");
		hogar_id = getIntent().getExtras().getString("hogar_id");

		etConglomerado.setText(conglomerado);
		etGrupo.setText(grupo);
		etVivienda.setText(vivienda);
		etHogar.setText(hogar_id);

		listaCodPer = con.PersonaLeerXHogarXMarco(marco_id, hogar_id);
		if (listaCodPer != null) {
			SimpleAdapter adapter = new SimpleAdapter(this,
					convertir(listaCodPer), R.layout.persona_item,
					new String[] { "cod_Persona", "persona" }, new int[] {
							R.id.tvPersona, R.id.tvCod });
			lvPersonas.setAdapter(adapter);
			lvPersonas.setDividerHeight(0);
		}
	}

	private List<HashMap<String, String>> convertir(List<Integer> l) {
		List<HashMap<String, String>> lista = new ArrayList<HashMap<String, String>>();
		for (int i = 0; i < l.size(); i++) {
			HashMap<String, String> map = new HashMap<String, String>();
			map.put("cod_Persona", "Persona");
			map.put("persona", "" + l.get(i));
			lista.add(map);
		}
		return lista;
	}

	private void GuardarDatos() {
		if (listaCodPer == null) {
			listaCodPer = new ArrayList<Integer>();
		}
	}

	private void NuevaPersona() {
		if (listaCodPer != null) {
			listaCodPer.add(listaCodPer.size() + 1);
			SimpleAdapter adapter = new SimpleAdapter(this,
					convertir(listaCodPer), R.layout.persona_item,
					new String[] { "cod_Persona", "persona" }, new int[] {
							R.id.tvPersona, R.id.tvCod });
			lvPersonas.setAdapter(adapter);
			lvPersonas.setDividerHeight(0);
			Toast.makeText(Encuesta_Persona_Activity.this,
					"Se agrego con exito la Persona", Toast.LENGTH_SHORT)
					.show();
		} else {
			listaCodPer = new ArrayList<Integer>();
			listaCodPer.add(1);
			SimpleAdapter adapter = new SimpleAdapter(
					Encuesta_Persona_Activity.this, convertir(listaCodPer),
					R.layout.persona_item, new String[] { "cod_Persona",
							"persona" },
					new int[] { R.id.tvPersona, R.id.tvCod });
			adapter.notifyDataSetChanged();
			lvPersonas.setAdapter(adapter);
			lvPersonas.setDividerHeight(0);
			Toast.makeText(Encuesta_Persona_Activity.this,
					"Se agrego con exito la Persona", Toast.LENGTH_SHORT)
					.show();
		}
	}

}
